/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package FACTURAS;

import INTERFAZ.*;
import CONTROLES.ControlSucursal;
import CONTROLES.ControlCliente;

import MODELOS.Cliente;
import UTILITARIOS.Herramienta;
import java.util.Date;
import UTILITARIOS.UTextField;
import UTILITARIOS.PanelPickFechas;
import UTILITARIOS.StringToDate;
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.util.StringTokenizer;

/**
 *
 * @author Administrador
 */
public class RegistrarFacturaCompra extends JDialog implements Propiedades{

//     ControlUsuario control;

    private JPanel titulo;
    private JPanel formulario;
    private JPanel botones;

    private JLabel lblIdSucursal;
    private JLabel lblNit;
    private JLabel lblCliente;
    private JLabel lblNumFac;
    private JLabel lblNumAutorizacion;
    private JLabel lblCodigoControl;
    private JLabel lblImporte;
    private JLabel lblICE;
    private JLabel lblExento;
    
    private Choice choiseIdSucursal;
    private UTextField txtCliente;
    private UTextField txtNit;
    private UTextField txtNumFac;
    private UTextField txtNumAutorizacion;
    private UTextField txtCodigoControl;
    private UTextField txtImporte;
    private UTextField txtICE;
    private UTextField txtExento;

    private PanelPickFechas fecha;

    private JButton btnAceptar;
    private JButton btnCancelar;

    private javax.swing.JFrame parent;

    ControlSucursal cSucursal;
    
    public RegistrarFacturaCompra(javax.swing.JFrame padre)
    {
        super(padre, true);
        this.parent = padre;
        setProperties();
        buildComponents();
        setPropertiesComponents();
        addComponents();
        addEvents();
    }


    public void setProperties() {
        setLayout(null);
        setSize(560, 388);
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        setTitle("Formulario de Registro de FACTURAS de Compras");
        getContentPane().setBackground(Color.BLACK);
        setResizable(false);
    }

    public void buildComponents() {

        lblCliente = new JLabel("Razon Social : ", JLabel.RIGHT);
        txtCliente = new UTextField();
        lblNit = new JLabel("NIT :", JLabel.RIGHT);
        txtNit = new UTextField(UTextField.INT_VALUE);
        lblNumFac = new JLabel("N# de Factura : ", JLabel.RIGHT);
        txtNumFac = new UTextField(UTextField.INT_VALUE);
        lblNumAutorizacion = new JLabel("N# de Autorizacion : ", JLabel.RIGHT);
        txtNumAutorizacion = new UTextField(UTextField.INT_VALUE);
        lblCodigoControl  = new JLabel("Codigo de Control : ", JLabel.RIGHT);
        txtCodigoControl = new UTextField();
        lblImporte = new JLabel("Importe Total : ", JLabel.RIGHT);
        txtImporte = new UTextField(UTextField.DOUBLE_VALUE);
        lblICE  = new JLabel("ICE : ", JLabel.RIGHT);
        txtICE = new UTextField(UTextField.DOUBLE_VALUE);
        lblExento  = new JLabel("Excento : ", JLabel.RIGHT);
        txtExento = new UTextField(UTextField.DOUBLE_VALUE);

        cSucursal = new ControlSucursal();
        String lista[] = cSucursal.nombresSuc();
        lblIdSucursal = new JLabel("Sucursal(*) : ", JLabel.RIGHT );
        choiseIdSucursal = new Choice();
        for(int i = 0; i<lista.length; i++)
           choiseIdSucursal.add(lista[i]);

        fecha = new PanelPickFechas("Fecha : ");
        
        titulo = new JPanel();
        formulario = new JPanel();
        botones = new JPanel();

        btnAceptar = new JButton("GUARDAR");
        btnCancelar = new JButton("CANCELAR");
    }

    public void setPropertiesComponents() {

        titulo.setLayout(new BorderLayout(1,1));
        titulo.setSize(new Dimension(555,360));
        titulo.setBorder(BorderFactory.createTitledBorder(null,"REGISTRO DE FACTURA",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));
        
        formulario.setLayout(new FlowLayout());
        formulario.setSize(new Dimension(500,130));
        formulario.setBorder(BorderFactory.createTitledBorder(null,"DATOS DE LA FACTURA",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));
        
        botones.setSize(250, 100);           
        botones.setBorder(BorderFactory.createTitledBorder(null,"ACCIONES",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));

        Dimension dimLabel = new Dimension(140,20);
	Dimension dimText = new Dimension(310,20);
	Font fontLabel = new Font("Tahoma",Font.PLAIN,11);

        lblCliente.setPreferredSize( dimLabel );
        lblCliente.setFont(fontLabel);
        lblCliente.setForeground(Color.BLACK);
        txtCliente.setPreferredSize( dimText );

        lblNit.setPreferredSize(dimLabel);
        lblNit.setFont(fontLabel);
        lblNit.setForeground(Color.BLACK);
        txtNit.setPreferredSize( dimText );

        lblNumFac.setPreferredSize(dimLabel);
        lblNumFac.setFont(fontLabel);
        lblNumFac.setForeground(Color.BLACK);
        txtNumFac.setPreferredSize( dimText );

        lblIdSucursal.setPreferredSize( dimLabel );
        lblIdSucursal.setFont(fontLabel);
        lblIdSucursal.setForeground(Color.BLACK);
        choiseIdSucursal.setPreferredSize( dimText );

        if(Bienvenida.user.getTipoUsuario().equalsIgnoreCase("ADMINISTRADOR") && Bienvenida.user.getToken().equalsIgnoreCase("INGRESAR") ){
           choiseIdSucursal.setEnabled(true);
           }else{
           choiseIdSucursal.setEnabled(false);
           }

        lblNumAutorizacion.setPreferredSize( dimLabel );
        lblNumAutorizacion.setFont(fontLabel);
        lblNumAutorizacion.setForeground(Color.BLACK);
        txtNumAutorizacion.setPreferredSize( dimText );

        lblImporte.setPreferredSize(dimLabel);
        lblImporte.setFont(fontLabel);
        lblImporte.setForeground(Color.BLACK);
        txtImporte.setPreferredSize(dimText);

        lblICE.setPreferredSize(dimLabel);
        lblICE.setAlignmentX(RIGHT_ALIGNMENT);
        lblICE.setFont(fontLabel);
        lblICE.setForeground(Color.BLACK);
        txtICE.setPreferredSize(dimText);

        lblExento.setPreferredSize( dimLabel );
        lblExento.setFont(fontLabel);
        lblExento.setForeground(Color.BLACK);
        txtExento.setPreferredSize( dimText );

        lblCodigoControl.setPreferredSize(dimLabel);
        lblCodigoControl.setFont(fontLabel);
        lblCodigoControl.setForeground(Color.BLACK);
        txtCodigoControl.setPreferredSize(dimText);
        
        fecha.setPreferredSize(new Dimension(450,20));
		
        btnAceptar.setPreferredSize(new Dimension(110,20));
        btnCancelar.setPreferredSize(new Dimension(110,20));

        botones.setOpaque(false);

        btnAceptar.setToolTipText("guardar Factura");
        btnAceptar.setForeground(Color.BLACK);
        btnCancelar.setToolTipText("Cancelar la operación");
        btnCancelar.setForeground(Color.BLACK);

        btnAceptar.setMnemonic('a');
        btnCancelar.setMnemonic('c');
    }

    public void addComponents() {

       
        formulario.add(lblIdSucursal);
        formulario.add(choiseIdSucursal);
        formulario.add(lblNit);
        formulario.add(txtNit);
        formulario.add(lblCliente);
        formulario.add(txtCliente);
        formulario.add(lblNumFac);
        formulario.add(txtNumFac);
        formulario.add(lblNumAutorizacion);
        formulario.add(txtNumAutorizacion);
        formulario.add(fecha);
        formulario.add(lblImporte);
        formulario.add(txtImporte);
        formulario.add(lblICE);
        formulario.add(txtICE);
        formulario.add(lblExento);
        formulario.add(txtExento);
        formulario.add(lblCodigoControl);
        formulario.add(txtCodigoControl);
        

        botones.add(btnAceptar);
        botones.add(btnCancelar);        
        
        add(titulo);        
        titulo.add( "Center",formulario);
        titulo.add("South",botones);

    }
    public void addEvents() {

        btnAceptar.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                double monto = Double.parseDouble(gettxtImporte());
                if(monto <= 0.0 || gettxtNit().equals("") || gettxtCliente().equals("") || gettxtNumAutorizacion().equals("") || gettxtNumFac().equals("") )
                    JOptionPane.showMessageDialog(null, "El Formulario no ha sido llenado correctamente verifique que todos los campos esten llenos", "Confirmación", JOptionPane.ERROR_MESSAGE);
                else{

                    ControlFacturaCompra control_f = new ControlFacturaCompra();
                    FacturaCompra fac = new FacturaCompra();

                    String idSuc = getChoiseIdSucursal();
                    StringTokenizer i = new StringTokenizer(idSuc,"-");
                    int idSucursal = Integer.parseInt(i.nextToken());

                    double ice = Double.parseDouble(gettxtICE());
                    double ex = Double.parseDouble(gettxtExento());

                    String fechaE = getFechaCreado();
                    Date fechaC = new StringToDate().convertir(fechaE);

                    fac.setNitCliente(gettxtNit());
                    fac.setCliente(gettxtCliente());
                    fac.setNumFactura(gettxtNumFac());
                    fac.setNumAutorizacion(gettxtNumAutorizacion());
                    fac.setIce(ice);
                    fac.setExento(ex);
                    fac.setMonto(Herramienta.redondear(monto, 2));
                    fac.setFecha(fechaC);
                    fac.setIdSucursal(idSucursal);
                    fac.setCodigoControl(gettxtCodigoControl());

                    int r = control_f.registrarFacturaCompra(fac);
                    if( r == 1){
                        JOptionPane.showMessageDialog(null, "La Factura a sido agregada Exitosamente", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
                         settxtNit("");
                         settxtCliente("");
                         settxtNumFac("");
                         settxtNumAutorizacion("");
                         settxtImporte("");
                         settxtICE("0");
                         settxtExento("0");
                         settxtCodigoControl("");
                    }else
                        JOptionPane.showMessageDialog(null, "Se produjo un error al tratar de registrar la Factura", "Confirmación", JOptionPane.ERROR_MESSAGE);
                }
            }
        });
        btnCancelar.addActionListener( new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                        //JOptionPane.showMessageDialog(null, "Gracias por utilizar el sistema ", "Adventencia", JOptionPane.OK_OPTION);
                        //System.exit(0);
                    dispose();
                }
        });
       addWindowListener( new WindowAdapter(){
                @Override
                public void windowClosing(WindowEvent e) {
                        //JOptionPane.showMessageDialog(null, "Seguro que quiere salir", "Adventencia", JOptionPane.OK_OPTION);
                        //System.exit(0);
                }
        });
    }

    public String getChoiseIdSucursal() {
        return choiseIdSucursal.getSelectedItem();
    }

    public void setChoiseIdSucursal(String choiseIdSucursal) {
        this.choiseIdSucursal.select(choiseIdSucursal);
    }

    public String gettxtCliente() {
        return txtCliente.getText();
    }
    public void settxtCliente(String cliente) {
         txtCliente.setText(cliente);
    }
    public String gettxtNit() {
        return  txtNit.getText();
    }
    public void settxtNit(String nit) {
         txtNit.setText(nit);
    }
    public String gettxtNumAutorizacion() {
        return txtNumAutorizacion.getText();
    }

    public void settxtNumAutorizacion(String aut) {
         txtNumAutorizacion.setText(aut);
    }

    public String gettxtNumFac() {
        return txtNumFac.getText();
    }
    public void settxtNumFac(String numfac) {
         txtNumFac.setText(numfac);
    }
    public String gettxtCodigoControl() {
        return txtCodigoControl.getText();
    }
    public void settxtCodigoControl(String codigo) {
         txtCodigoControl.setText(codigo);
    }
    public String gettxtImporte() {
        return  txtImporte.getText();
    }
    public void settxtImporte(String imp) {
         txtImporte.setText(imp);
    }
    public String gettxtICE() {
        return  txtICE.getText();
    }
    public void settxtICE(String ice) {
         txtICE.setText(ice);
    }
    public String gettxtExento() {
        return  txtExento.getText();
    }
    public void settxtExento(String ex) {
         txtExento.setText(ex);
    }
    public String getFechaCreado() {

        return fecha.getDateText();
    }
    public void settxtFechaCreado(String fechac) {
         fecha.setDate(fechac);
    }


    public static void main(String args[])
    {
        Cliente c = new Cliente();
        ControlCliente control_c = new ControlCliente();
        c = control_c.dameCliente(1);
 
        RegistrarFacturaCompra n = new RegistrarFacturaCompra(new javax.swing.JFrame());
        n.setVisible(true);

    }


}
